home *** CD-ROM | disk | FTP | other *** search
/ World of Education / World of Education.iso / world_n / nonlin20.zip / NONLIN.DOC < prev    next >
Text File  |  1992-12-05  |  99KB  |  1,929 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                                     N O N L I N
  11.  
  12.  
  13.  
  14.                        Nonlinear Regression Analysis Program
  15.  
  16.                                A "shareware" program
  17.  
  18.  
  19.  
  20.  
  21.                                 Phillip H. Sherrod
  22.  
  23.                Member, Association of Shareware Professionals (ASP)
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.               Nonlin  allows  you  to  perform statistical regression
  31.               analyses to  estimate  the  values  of  parameters  for
  32.               linear, multivariate, polynomial, and general nonlinear
  33.               functions.   The  regression  analysis  determines  the
  34.               values of the parameters which cause  the  function  to
  35.               best fit  the  observed  data that you provide.  Nonlin
  36.               allows you to specify the function whose parameters are
  37.               being estimated using ordinary algebraic notation.   In
  38.               addition to determining the parameter estimates, Nonlin
  39.               can  be  directed  to  generate  an  output  file  with
  40.               predicted values and residuals.  It can also  plot  the
  41.               data observations  and the computed function.  Although
  42.               designed for regression analysis, Nonlin  can  also  be
  43.               used  to find the root (zero point) or minimum absolute
  44.               value of a nonlinear expression.  Nonlin is in  use  at
  45.               many engineering and research centers around the world.
  46.  
  47.                 NONLIN -- Nonlinear Regression Program       Page 1
  48.  
  49.  
  50.  
  51.  
  52.          INTRODUCTION TO REGRESSION ANALYSIS
  53.  
  54.          The goal of regression analysis is to  determine  the  values  of
  55.          parameters  for  a function that cause the function to best fit a
  56.          set of data observations that you provide.  In linear regression,
  57.          the function is a linear (straight line) equation.  For  example,
  58.          if  we  assume the value of an automobile decreases by a constant
  59.          amount each year after its purchase, and for  each  mile  driven,
  60.          the  following  linear  function  would  predict  its  value (the
  61.          dependent  variable)  as  a  function  of  the  two   independent
  62.          variables which are age and miles:
  63.  
  64.          value = price + depage*age + depmiles*miles
  65.  
  66.          where  `value',  the dependent variable, is the value of the car,
  67.          `age' is the age of the car, and `miles' is the number  of  miles
  68.          that the car has been driven.
  69.  
  70.          The  regression  analysis  performed by Nonlin will determine the
  71.          best values of the three parameters, `price', the estimated value
  72.          when age is 0  (i.e.,  when  the  car  was  new),  `depage',  the
  73.          depreciation  that  takes  place  each  year, and `depmiles', the
  74.          depreciation for each mile driven.  The values  of  `depage'  and
  75.          `depmiles'  will  be  negative because the car loses value as age
  76.          and miles increase.
  77.  
  78.          In a problem such as this  car  depreciation  example,  you  must
  79.          provide  a  data  file containing the values of the dependent and
  80.          independent variables for a set of observations.  In this example
  81.          each observation record would contain three numbers: value,  age,
  82.          and  miles,  collected  from used car ads for the same model car.
  83.          The more observations you provide, the more accurate will be  the
  84.          estimate of the parameters.
  85.  
  86.          The Nonlin commands to perform this regression are shown below:
  87.  
  88.              VARIABLES VALUE,AGE,MILES
  89.              PARAMETERS PRICE,DEPAGE,DEPMILES
  90.              FUNCTION VALUE = PRICE + DEPAGE*AGE + DEPMILES*MILES
  91.              DATA
  92.              (data values go here)
  93.  
  94.          Once  the  values of the parameters are determined by Nonlin, you
  95.          can use the formula to predict the value of a car  based  on  its
  96.          age and miles driven.  For example, if Nonlin computed a value of
  97.          16000  for  price, -1000 for depage, and -0.15 for depmiles, then
  98.          the function
  99.  
  100.          value = 16000 - 1000*age - 0.15*miles
  101.  
  102.                NONLIN -- Nonlinear Regression Program       Page 2
  103.  
  104.  
  105.          could be used to estimate the value of a car with a known age and
  106.          number of miles.
  107.  
  108.          If  a  perfect  fit  existed  between the function and the actual
  109.          data, the actual value of  each  car  in  your  data  file  would
  110.          exactly equal  the  predicted value.  Typically, however, this is
  111.          not the case, and the difference between the actual value of  the
  112.          dependent  variable  and  its  predicted  value  for a particular
  113.          observation is the error of the estimate which is  known  as  the
  114.          "deviation" or "residual".  The goal of regression analysis is to
  115.          determine  the values of the parameters which minimize the sum of
  116.          the squared residual values for the set of observations.  This is
  117.          known as a "least squares" regression fit.
  118.  
  119.  
  120.          INTRODUCTION TO NONLIN
  121.  
  122.          Nonlin is a very powerful regression analysis program.  Using  it
  123.          you  can  perform  multivariate,  linear, polynomial, and general
  124.          nonlinear regression.  What this means is that  you  specify  the
  125.          form  of  the function to be fitted to the data, and the function
  126.          can include nonlinear terms such as variables  raised  to  powers
  127.          and  library  functions  such  as  log,  exponential,  sine, etc.
  128.          Nonlin uses a state-of-the-art regression algorithm that works as
  129.          well, or better, than any you are likely to  find  in  commercial
  130.          statistical packages.
  131.  
  132.          As   an   example   of  nonlinear  regression,  consider  another
  133.          depreciation problem.  The value of a used airplane decreases for
  134.          each year of its age.  Assuming the value of a plane falls by the
  135.          same amount each year, a linear function relating  value  to  age
  136.          is:
  137.  
  138.               Value = p0 + p1*Age
  139.  
  140.          Where  `p0'  and  `p1'  are the parameters whose values are to be
  141.          determined.  However, it is a well known fact  that  planes  (and
  142.          automobiles)  lose more value the first year than the second, and
  143.          more the second than the third, etc.  This means  that  a  linear
  144.          (straight  line) function cannot accurately model this situation.
  145.          A better, nonlinear, function is:
  146.  
  147.               Value = p0 + p1*exp(-p2*Age)
  148.  
  149.          Where the `exp' function is the value of e (2.7182818...)  raised
  150.          to a  power.    This  type  of  function  is  known  as "negative
  151.          exponential" and is appropriate for modeling a value  whose  rate
  152.          of  decrease  is proportional to the difference between the value
  153.          and some base value.  The F33YEAR.NLR example command file fits a
  154.          linear function to the value of used airplanes.   The  F33EXP.NLR
  155.          example  fits  a  negative exponential function to the same data.
  156.          Run both examples and compare the fitted functions.  See  F33.NLR
  157.          for  an  example of a multiple regression using three independent
  158.  
  159.                NONLIN -- Nonlinear Regression Program       Page 3
  160.  
  161.  
  162.          variables.
  163.  
  164.          Much  of  the  convenience of Nonlin comes from the fact that you
  165.          can  enter  complicated  functions   using   ordinary   algebraic
  166.          notation.   Examples of functions that can be handled with Nonlin
  167.          include:
  168.  
  169.          Linear: Y = p0 + p1*X
  170.  
  171.          Quadratic: Y = p0 + p1*X + p2*X^2
  172.  
  173.          Multivariate: Y = p0 + p1*X + p2*Z + p3*X*Z
  174.  
  175.          Exponential: Y = p0 + p1*exp(X)
  176.  
  177.          Periodic: Y = p0 + p1*sin(p2*X)
  178.  
  179.          Misc: Y = p0 + p1*Y + p2*exp(Y) + p3*sin(Z)
  180.  
  181.          In other words, the function is a  general  expression  involving
  182.          one  dependent  variable  (on the left of the equal sign), one or
  183.          more independent variables, and  one  or  more  parameters  whose
  184.          values are to be estimated.
  185.  
  186.          Because  of  its  generality,  Nonlin  can  perform  all  of  the
  187.          regressions handled by ordinary linear or multivariate regression
  188.          programs as well as nonlinear regression.  However, in  order  to
  189.          handle  nonlinear  functions,  Nonlin  uses an iterative function
  190.          optimization algorithm which is slower  than  the  simple  linear
  191.          regression  algorithm and has the potential for not converging to
  192.          a solution.
  193.  
  194.  
  195.          INSTALLING NONLIN
  196.  
  197.          The NONLIN system consists of the following files:
  198.  
  199.            NONLIN.EXE -- The executable program.
  200.            NONLIN.DOC -- Documentation file.
  201.            NONLIN.FON -- Font file used if you request a plot.
  202.            NONLIN.LJF -- HP LaserJet font file used if you print a plot.
  203.                 *.NLR -- Example command files.
  204.          REGISTER.DOC -- Form used to register your use of Nonlin.
  205.  
  206.          To install Nonlin, copy the files  into  the  directory  of  your
  207.          choice.   If  you do not plan to generated hard copy output for a
  208.          LaserJet printer, you may delete the NONLIN.LJF  file.    If  the
  209.          NONLIN.FON   and   NONLIN.LJF  files  are  not  in  your  current
  210.          directory, you must place a command of the following form in your
  211.          AUTOEXEC.BAT file to tell Nonlin  where  to  look  for  its  font
  212.          files:
  213.  
  214.                 NONLIN -- Nonlinear Regression Program       Page 4
  215.  
  216.  
  217.          SET NONLIN=directory
  218.  
  219.          Where "directory" is the name of the device and  directory  where
  220.          the files  are located.  For example, if the files are located in
  221.          a directory named NONLIN on the C  disk,  the  following  command
  222.          could be used:
  223.  
  224.          SET NONLIN=C:\NONLIN
  225.  
  226.  
  227.          USING NONLIN
  228.  
  229.          Once  Nonlin  has  been  installed, it can be started using a DOS
  230.          command of the form:
  231.  
  232.          NONLIN command_file [listing_file]
  233.  
  234.          where "command_file" is the name  of  a  file  containing  Nonlin
  235.          commands that  control  the  analysis.   The sections that follow
  236.          describe these commands.  If you  specify  a  command  file  name
  237.          without  an  extension,  ".NLR" is used as the default extension.
  238.          If you omit the command file name, Nonlin prints a  list  of  its
  239.          commands.
  240.  
  241.          A  "listing_file" parameter may be specified on the command line.
  242.          If  you  specify  a  file  name,  the  output  (results)  of  the
  243.          regression analysis are written to this file.  If no file name is
  244.          specified,  the output is written to a file with the same name as
  245.          the command_file but with the extension ".LST".  If you specify a
  246.          listing file name without an extension, ".LST" is provided as the
  247.          default extension.  Specify NUL for the listing_file  if  you  do
  248.          not want to generate an output file.
  249.  
  250.          For   example,  to  process  a  command  file  named  LINEAR.NLR,
  251.          directing output to a file named LINEAR.LST,  use  the  following
  252.          command:
  253.  
  254.          NONLIN LINEAR
  255.  
  256.          To  do  the  same  analysis, directing the output to a file named
  257.          MODEL1.LST, use the following command:
  258.  
  259.          NONLIN LINEAR MODEL1
  260.  
  261.          At this point, I suggest  you  pause  in  your  reading  and  try
  262.          running a Nonlin example to get a feel for how it works.  Several
  263.          example  files  with  the  extension ".NLR" are provided with the
  264.          distribution.  LINEAR.NLR is a good one to start with.  If you do
  265.          not have a graphics monitor, edit  the  LINEAR.NLR  command  file
  266.          (and other example files) and remove the PLOT command.
  267.  
  268.                 NONLIN -- Nonlinear Regression Program       Page 5
  269.  
  270.  
  271.          FUNCTION SPECIFICATION
  272.  
  273.          Much of the power of Nonlin comes from its  ability  to  estimate
  274.          the  value  of  parameters that are part of complicated functions
  275.          that you enter in ordinary algebraic form.  This section explains
  276.          the arithmetic operators and built in functions that are used  to
  277.          specify a function.
  278.  
  279.          Arithmetic Operators
  280.  
  281.          The following arithmetic operators may be used in expressions:
  282.  
  283.              +        addition
  284.              -        subtraction or unary minus
  285.              *        multiplication
  286.              /        division
  287.              ** or ^  exponentiation
  288.  
  289.          Exponentiation   has   the   highest   precedence,   followed  by
  290.          multiplication and division, and then addition  and  subtraction.
  291.          Parentheses may be used to group terms.
  292.  
  293.          As  a  convenience,  Nonlin allows you to omit the multiplication
  294.          operator between a numeric constant  and  a  following  variable,
  295.          parameter, or  function.  For example, the expressions "2pi", and
  296.          "2 pi" are equivalent to "2*pi".  Similarly, "5X"  is  equivalent
  297.          to "5*X".    However,  if  you specify a number before the letter
  298.          "E", it will be taken as the exponential form of  a  number  (see
  299.          below)  rather  than  the  number  times  the constant e (base of
  300.          natural logarithms).
  301.  
  302.          Numeric Constants
  303.  
  304.          Numeric constants may be written in their  natural  form  (1,  0,
  305.          1.5,  .0003, etc.) or in exponential form, n.nnnEppp, where n.nnn
  306.          is the base value and ppp is the power of ten by which  the  base
  307.          is multiplied.    For  example, the number 1.5E4 is equivalent to
  308.          15000.  All numbers  are  treated  as  "floating  point"  values,
  309.          regardless of  whether a decimal point is specified or not.  As a
  310.          convenience for entering time values, if a value contains one  or
  311.          more  colons,  the portion to the left of the colon is multiplied
  312.          by 60.  For  example,  1:00  is  equivalent  to  60;  1:00:00  is
  313.          equivalent to 3600.
  314.  
  315.          Symbolic Constants
  316.  
  317.          You can use the CONSTANT command to associate symbolic names with
  318.          constant numeric  values.   When you use the symbolic name in the
  319.          function the numeric value is substituted for the symbolic name.
  320.  
  321.                NONLIN -- Nonlinear Regression Program       Page 6
  322.  
  323.  
  324.          Built-in Constants
  325.  
  326.          There  are  two  built-in numeric constants that may be specified
  327.          using symbolic names.  The symbolic name "PI"  is  equivalent  to
  328.          the value of pi, 3.14159...  Similarly, the symbolic constant "E"
  329.          is  equivalent to the base of natural logarithms, e, 2.7182818...
  330.          You may write PI and E using either upper or lower case.
  331.  
  332.  
  333.          Built in Functions
  334.  
  335.          The following functions are built into Nonlin and may be used  in
  336.          expressions:
  337.  
  338.          ABS(x) -- Absolute value of x.
  339.  
  340.          ACOS(x) -- Arc cosine of x.  Angles are measured in radians.
  341.  
  342.          ASIN(x) -- Arc sine of x.  Angles are measured in radians.
  343.  
  344.          ATAN(x) -- Arc tangent of x.  Angles are measured in radians.
  345.  
  346.          BETAI(x,a,b) --   Incomplete   beta   function:   Ix(a,b).    The
  347.               incomplete beta function can be used to compute a variety of
  348.               statistical functions.   For  example,  the  probability  of
  349.               Student's  t  with  `df'  degrees of freedom can be computed
  350.               with BETAI(df/(df+t^2),.5*df,.5).  The probability of the  F
  351.               statistic  with  df1  and  df2  degrees  of  freedom  can be
  352.               computed with 2*BETAI(df2/(df2+df1*f),.5*df2,.5*df1).
  353.  
  354.          COS(x) -- Cosine of x.  Angles are measured in radians.
  355.  
  356.          COSH(x) -- Hyperbolic cosine of x.
  357.  
  358.          COT(x) -- Cotangent of x. (COT(x) = 1/TAN(x)).  Angle in radians.
  359.  
  360.          CSC(X) -- Cosecant of x. (CSC(x) = 1/SIN(x)).  Angle in radians.
  361.  
  362.          DEG(x) -- Converts an  angle,  x,  measured  in  radians  to  the
  363.               equivalent number of degrees.
  364.  
  365.          EI1(alpha,phi) --  Elliptic integral of the first kind.  Computes
  366.               the  integral  from  0  to  phi  radians  of  the   function
  367.               d.phi/sqrt(1-k**2*sin(phi)**2),  where k = sin(alpha). alpha
  368.               and phi must be in the range 0 to pi/2.
  369.  
  370.          EI2(alpha,phi) -- Elliptic integral of the second kind.  Computes
  371.               the  integral  from  0  to  phi  radians  of  the   function
  372.               sqrt(1-k**2*sin(phi)**2)*d.phi,  where k = sin(alpha). alpha
  373.               and phi must be in the range 0 to pi/2.
  374.  
  375.                 NONLIN -- Nonlinear Regression Program       Page 7
  376.  
  377.  
  378.          EIC1(alpha) -- Complete elliptic  integral  of  the  first  kind.
  379.               Computes the integral from 0 to pi/2 radians of the function
  380.               d.phi/sqrt(1-k**2*sin(phi)**2), where k = sin(alpha).  alpha
  381.               must be in the range 0 to (less than) pi/2.
  382.  
  383.          EIC2(alpha)  --  Complete  elliptic  integral of the second kind.
  384.               Computes the integral from 0 to pi/2 radians of the function
  385.               sqrt(1-k**2*sin(phi)**2)*d.phi, where k = sin(alpha).  alpha
  386.               must be in the range 0 to pi/2.
  387.  
  388.          ERF(x) -- Standard error function of x.
  389.  
  390.          EXP(x) -- e (base of natural logarithms) raised to the x power.
  391.  
  392.          FAC(x) --  x  factorial (x!).  Note, the FAC function is computed
  393.               using the GAMMA function (FAC(x)=GAMMA(x+1)) so  non-integer
  394.               argument values may be computed.
  395.  
  396.          GAMMA(x) -- Gamma function.  Note, GAMMA(x+1) = x! (x factorial).
  397.  
  398.          GAMMAI(x)   --   Reciprocal   of   GAMMA  function  (GAMMAI(x)  =
  399.               1/GAMMA(x)).
  400.  
  401.          GAMMALN(x) -- Log (base e) of the GAMMA function.
  402.  
  403.          HAV(x) -- Haversine of  x.  (HAV(x) = (1-COS(x))/2).    Angle  in
  404.               radians.
  405.  
  406.          J0(x) -- Bessel function of the first kind, order zero.
  407.  
  408.          J1(x) -- Bessel function of the first kind, order one.
  409.  
  410.          JN(n,x) -- Bessel function of the first kind, order n.
  411.  
  412.          LOG(x) -- Natural logarithm of x.
  413.  
  414.          LOG10(x) -- Base 10 logarithm of x.
  415.  
  416.          LOG2(x) -- Base 2 logarithm of x.
  417.  
  418.          MAX(x1,x2) -- Maximum value of x1 or x2.
  419.  
  420.          MIN(x1,x2) -- Minimum value of x1 or x2.
  421.  
  422.          NORMAL(x) -- Normal probability distribution of x.  X is in units
  423.               of standard  deviations  from  the  mean.   See also the NPD
  424.               function.  NORMAL(x) = NPD(x,0,1);
  425.  
  426.          NPD(x,mean,std) -- Normal  probability  distribution  of  x  with
  427.               specified mean  and  standard  deviation.   X is in units of
  428.               standard deviations from the mean.
  429.  
  430.                 NONLIN -- Nonlinear Regression Program       Page 8
  431.  
  432.  
  433.          PAREA(x) -- Area under the normal probability distribution  curve
  434.               from -infinity to x. (i.e., integral from -infinity to x  of
  435.               NORMAL(x)).
  436.  
  437.          PULSE(a,x,b) -- Pulse function.  If the value of x is less than a
  438.               or greater  than b, the value of the function is 0.  If x is
  439.               greater than or equal to a and less than or equal to b,  the
  440.               value of the function is 1.  In other words, it is 1 for the
  441.               domain (a,b)  and  zero  elsewhere.   If you need a function
  442.               that is zero in the domain (a,b) and 1  elsewhere,  use  the
  443.               expression (1-PULSE(a,x,b)).
  444.  
  445.          RAD(x) -- Converts an angle measured in degrees to the equivalent
  446.               number of radians.
  447.  
  448.          SEC(x) -- Secant of x. (SEC(x) = 1/COS(x)).  Angle in radians.
  449.  
  450.          SEL(a1,a2,v1,v2)  --  If a1 is less than a2 then the value of the
  451.               function is v1.  If a1 is greater than or equal to a2,  then
  452.               the value of the function is v2.
  453.  
  454.          SIN(x) -- Sine of x.  Angles are measured in radians.
  455.  
  456.          SINH(x) -- Hyperbolic sine of x.
  457.  
  458.          SQRT(x) -- Square root of x.
  459.  
  460.          STEP(a,x) --  Step  function.   If x is less than a, the value of
  461.               the function is 0.  If x is greater than or equal to a,  the
  462.               value of the function is 1.  If you need a function which is
  463.               1  up  to  a certain value and then 0 beyond that value, use
  464.               the expression STEP(x,a).  See PIECE.NLR for an  example  of
  465.               this function.
  466.  
  467.          T(n,x) -- Chebyshev polynomial of order n.
  468.  
  469.          TAN(x) -- Tangent of x.  Angles are measured in radians.
  470.  
  471.          TANH(x) -- Hyperbolic tangent of x.
  472.  
  473.          Y0(x) -- Bessel function of the second kind, order zero.
  474.  
  475.          Y1(x) -- Bessel function of the second kind, order one.
  476.  
  477.          YN(n,x) -- Bessel function of the second kind, order n.
  478.  
  479.                 NONLIN -- Nonlinear Regression Program       Page 9
  480.  
  481.  
  482.          NONLIN COMMAND FILES
  483.  
  484.          The commands described in this section are placed  in  a  command
  485.          file.  When you start Nonlin, you specify the name of the command
  486.          file as  a  parameter  on  the command line.  For example, if the
  487.          command file name is CAR.NLR, the following command  would  cause
  488.          Nonlin to execute the commands in the command file:
  489.  
  490.          NONLIN CAR.NLR
  491.  
  492.          If you do not specify a file name extension for the command file,
  493.          ".NLR" is used by default.  The output of the regression for this
  494.          example  would  be written to a file named CAR.LST. Command files
  495.          can be created using a text editor such as  EDIT-32,  EDLIN,  the
  496.          DOS version 5 EDIT program, or any other editor or word processor
  497.          that is capable of creating an ascii text file without formatting
  498.          codes.
  499.  
  500.          Comments  may be placed in command files by preceding the comment
  501.          with an exclamation point.  Entire lines may be used for comments
  502.          and comments can be placed at the end of commands.
  503.  
  504.          Command lines can be continued by placing a  semicolon  character
  505.          as the last non-blank character on the line (a comment may follow
  506.          the  semicolon)  and then continuing the command on the following
  507.          line(s).
  508.  
  509.          Every  command  file  must  contain   the   following   commands:
  510.          VARIABLES,  PARAMETERS,  FUNCTION,  and  DATA. The DATA statement
  511.          introduces the data for the analysis and must be the last command
  512.          in the file (data records  may  follow  it).    Other,  optional,
  513.          commands may be interspersed in the command file.
  514.  
  515.          The following is an example of a complete command file:
  516.  
  517.              VARIABLES  VALUE,AGE,MILES
  518.              PARAMETERS BASE,DEPAGE,DEPMILES
  519.              FUNCTION VALUE = BASE + DEPAGE*AGE + DEPMILES*MILES
  520.              DATA
  521.              (data records follow)
  522.  
  523.  
  524.          NONLIN COMMANDS
  525.  
  526.          The  following is a list of the valid Nonlin commands that can be
  527.          placed in a  Nonlin  command  file.    Command  keywords  may  be
  528.          abbreviated  to  the  first  three  letters  except for CONSTANT,
  529.          CONSTRAIN, and CONFIDENCE which  require  six  letters.    Nonlin
  530.          commands are not case sensitive.
  531.  
  532.                 NONLIN -- Nonlinear Regression Program      Page 10
  533.  
  534.  
  535.          TITLE string (optional) -- Specifies a title line that is printed
  536.               with the results of the analysis.
  537.  
  538.          VARIABLES var1,var2,... (required) -- Specifies the names of  the
  539.               variables that  will be used in the function.  The dependent
  540.               variable and the independent variables  must  be  specified.
  541.               The  order of the variable names must match the order of the
  542.               data  values  on  each  observation  record  (the  dependent
  543.               variable   may   come   before   or  after  the  independent
  544.               variables).  You may define more variables than you actually
  545.               use in  the  function  specification.    A  maximum  of   12
  546.               variables may  be  specified.  The length of a variable name
  547.               is limited to 10 characters.  Capitalize the variable  names
  548.               as you want them displayed in the results.
  549.  
  550.               You  may  specify  all  of the variables on a single command
  551.               line (which may be  continued),  or  you  may  use  multiple
  552.               VARIABLES commands.  If you use multiple commands, the order
  553.               in  which  they  appear  in  the command file must match the
  554.               order of the variable values  on  each  observation  record.
  555.               The  VARIABLES  command  must  precede the FUNCTION command.
  556.               See F33.NLR for an example of a  multiple  regression  using
  557.               three independent variables.
  558.  
  559.          PARAMETERS param1[=initial1],param2[=initial2],...  (required) --
  560.               Specifies the names of the parameters whose values are to be
  561.               determined by Nonlin.  Nonlin is capable of handling  up  to
  562.               12 parameters.    The  parameter  names  may  not  exceed 10
  563.               characters in length.  Do not specify  any  parameters  that
  564.               are not  used  in the function.  The PARAMETERS command must
  565.               precede the FUNCTION command.
  566.  
  567.               Optionally, an initial estimate of the parameter  value  may
  568.               be  specified  by following the parameter name with an equal
  569.               sign and the value.  If no value is specified, 1 is used  by
  570.               default.   Specifying  an  initial  value  that  is near the
  571.               actual value usually speeds up the operation of  Nonlin  and
  572.               may enable  it  to  successfully converge to a solution.  If
  573.               Nonlin is unable to converge to a solution,  try  specifying
  574.               different starting  values  for  the  parameters.    Try  to
  575.               specify a value that at least has the correct  sign  as  the
  576.               expected final value.
  577.  
  578.               The CONSTRAIN command (described below) can be used to limit
  579.               the range  of  values for parameters.  The SWEEP command can
  580.               be used to perform the regression analysis with a  range  of
  581.               parameter initial  values.  The CONSTANT command can be used
  582.               to define a parameter with a fixed value.
  583.  
  584.                 NONLIN -- Nonlinear Regression Program      Page 11
  585.  
  586.  
  587.          CONFIDENCE [percent] (optional) -- Specifies  that  a  confidence
  588.               interval is to be printed for each estimated parameter.  The
  589.               purpose of regression analysis  is  to  determine  the  best
  590.               estimate of   parameter  values.    However,  as  with  most
  591.               statistical  calculations,   the   values   determined   are
  592.               estimates of the true values.  The CONFIDENCE command causes
  593.               Nonlin to print a table showing the range of possible values
  594.               for each  parameter given a specified confidence value.  The
  595.               "percent" parameter spcifies the probability that  that  the
  596.               actual  value  of  the  parameter  is  within the confidence
  597.               interval to be computed.  For example, the command
  598.  
  599.               CONFIDENCE 95
  600.  
  601.               specifies that the confidence interval(s) are to be computed
  602.               such that there is a 95 percent probability that the  actual
  603.               values  of  the parameters are within the intervals (or that
  604.               there is a 5 percent chance that the parameters are  outside
  605.               the intervals).    The "percent" parameter may range from 50
  606.               to 99.999.   If  the  CONFIDENCE  command  is  used  without
  607.               specifiying a percent value, 90 is used by default.
  608.  
  609.          CONSTANT parameter=value  (optional)  --  Specifies the name of a
  610.               symbolic constant and associates a numeric value.   You  may
  611.               then   use  the  symbolic  name  in  the  function  and  the
  612.               corresponding constant numeric value  will  be  substituted.
  613.               This  is useful when you are trying out different models and
  614.               want to easily be able to change a constant value  for  each
  615.               run.   The  CONSTANT  commands  must  precede  the  FUNCTION
  616.               command.  The following is an example of a symbolic constant
  617.               named "Roomtemp" that causes the value 73 to be  substituted
  618.               in the function:
  619.  
  620.               Variable Time            ! Cooling time in seconds
  621.               Variable Temp            ! Temperature of object
  622.               Constant Roomtemp = 73        ! Ambient temperature
  623.               Parameter InitTemp        ! Initial temperature
  624.               Parameter Coolrate        ! Cooling rate factor
  625.               Function Temp = Roomtemp + InitTemp * exp(-Coolrate * Time)
  626.  
  627.          CONSTRAIN parameter=lowvalue,highvalue  (optional) -- Specifies a
  628.               lower and upper limit on the range  of  a  parameter  value.
  629.               During  the solution process, Nonlin may allow a parameter's
  630.               value to temporarily move in a direction away from its final
  631.               value.  With some functions it may be necessary to constrain
  632.               the parameter's value so that it does not go negative (e.g.,
  633.               if the function takes the square root of the parameter),  or
  634.               zero (if the parameter is in a denominator).  If a parameter
  635.               is   tightly   constrained,   Nonlin  may  report  "singular
  636.               convergence" because it is unable to converge to an  optimum
  637.               value  of  the  parameter;  however, the estimated values of
  638.               other parameters may be useful.
  639.  
  640.                 NONLIN -- Nonlinear Regression Program      Page 12
  641.  
  642.  
  643.               Only a single parameter and its  associated  limits  may  be
  644.               specified  on  each  CONSTRAIN  command,  but  you  may  use
  645.               multiple CONSTRAIN  commands.    The PARAMETERS command must
  646.               precede the CONSTRAIN command.  Use the CONSTANT command  if
  647.               you wish to define a parameter with a fixed value.
  648.  
  649.               The  parameter  value is allowed to range from `lowvalue' to
  650.               `highvalue'.  If you want to prevent a parameter value  from
  651.               going  to  zero,  you must specify a value greater than zero
  652.               for the low value (specifying zero would allow it to  reach,
  653.               but not go below, zero).  For example, the following command
  654.               constrains  the  value  of `age' to be greater than zero and
  655.               less than or equal to 100:
  656.  
  657.               CONSTRAIN age = .0001,100
  658.  
  659.               See the COOLING.NLR, F33EXP.NLR,  and  POWER.NLR  files  for
  660.               examples of the CONSTRAIN command.
  661.  
  662.          COVARIANCE  (optional)  --  Causes the variance-covariance matrix
  663.               for the parameters to be printed.
  664.  
  665.          SWEEP parameter=lowvalue,highvalue,stepsize  (optional)        --
  666.               Specifies  that  the  regression analysis is to be performed
  667.               repeatedly with a set of starting values for the  parameter.
  668.               The  first  analysis  is performed with the parameter having
  669.               the `lowvalue'; the value of `stepsize' is then added to the
  670.               parameter's initial value  and  the  analysis  is  performed
  671.               again.   The  process  is  repeated  until  the value of the
  672.               parameter reaches `highvalue'.
  673.  
  674.               Each time  the  analysis  is  performed  the  value  of  the
  675.               residual  sum  of squares is compared with the best previous
  676.               result.  The estimated values of the parameters for the best
  677.               starting value are saved and used for the final analysis and
  678.               report.
  679.  
  680.               Only one parameter may be specified on each  SWEEP  command,
  681.               but  you  may  have  as  many  SWEEP  commands  as there are
  682.               parameters.  The number  of  regression  analyses  performed
  683.               will  be  equal  to  the  product of the number of parameter
  684.               values for each SWEEP command.
  685.  
  686.               The SWEEP command is useful when you are  trying  to  fit  a
  687.               complicated  function  that  may have "local minimum" values
  688.               other than the "global minimum".  Periodic  functions  (sin,
  689.               cos, etc.) are especially troublesome.
  690.  
  691.               See  the  SINE.NLR  command file for an example of the SWEEP
  692.               command.
  693.  
  694.                 NONLIN -- Nonlinear Regression Program      Page 13
  695.  
  696.  
  697.          FUNCTION depvar = function  (required) -- Specifies the  form  of
  698.               the function whose parameters are to  be  determined.    The
  699.               dependent variable must be the only thing to the left of the
  700.               equal sign.    The expression to the right of the equal sign
  701.               may contain variables, parameters, constants, operators, and
  702.               library functions  such  as  sqrt,  sin,  exp,  etc.     The
  703.               VARIABLES  and PARAMETERS commands must have appeared in the
  704.               command file before the FUNCTION command, and all  variables
  705.               and parameters used in the function must have been specified
  706.               on those  commands.  Some example FUNCTION commands are show
  707.               below:
  708.  
  709.               FUNCTION Y = P0 + P1*X
  710.  
  711.               FUNCTION DISTANCE = .5 * ACCEL * TIME^2
  712.  
  713.               FUNCTION VALUE = PRICE + YRDEP*AGE + MILEDEP*MILES
  714.  
  715.               FUNCTION POPULATN = BASE * GROWRATE * EXP(TIME)
  716.  
  717.          TOLERANCE value  (optional,  default=1E-10)  --   Specifies   the
  718.               tolerance   factor  that  is  used  to  determine  when  the
  719.               algorithm has  converged  to  a  solution.    Reducing   the
  720.               tolerance  value may produce a slightly more accurate result
  721.               but will increase the number of iterations and  the  running
  722.               time.   The  tolerance  value  must be in the range 1E-15 to
  723.               1E-1.
  724.  
  725.          ITERATIONS value (optional, default=50) -- Specifies the  maximum
  726.               number  of  iterations  that  should  be  attempted  by  the
  727.               algorithm.  If the solution does not converge to  the  limit
  728.               specified  by  the  TOLERANCE  command  (or  to  the default
  729.               tolerance)  before  the  maximum  number  of  iterations  is
  730.               reached, the process is stopped and the results are printed.
  731.               Failure   to   converge   before  the  specified  number  of
  732.               iterations could be caused by one of three things:
  733.  
  734.               1. The maximum allowed  number  of  iterations  may  be  too
  735.               small.  Try using an ITERATIONS command with a larger value.
  736.  
  737.               2. The tolerance  factor  may be too small.  Even a properly
  738.               converging solution will eventually "level off" or oscillate
  739.               around a good, but non-zero, sum  of  squares  value.    Try
  740.               using the TOLERANCE command to increase the tolerance value.
  741.  
  742.               3. The function  may  not  be  converging.    Try specifying
  743.               better (or at  least  different)  starting  values  for  the
  744.               parameters on  the  PARAMETERS  command.  Consider using the
  745.               SWEEP command to  specify  a  range  of  parameter  starting
  746.               values.
  747.  
  748.                NONLIN -- Nonlinear Regression Program      Page 14
  749.  
  750.  
  751.          REGISTER  (optional)  --  The  REGISTER  command  suppresses  the
  752.               copyright  and registration message that is normally printed
  753.               as part of a Nonlin report.  The use of this  command  is  a
  754.               reminder that you should register your use of Nonlin.  Note,
  755.               if   you   find   Nonlin   to  be  useful,  educational,  or
  756.               entertaining you are expected to register your use  so  that
  757.               the author can be justly compensated and that development of
  758.               the program  can  continue.  Use the form in REGISTER.DOC to
  759.               register your use.
  760.  
  761.          OUTPUT [TO file] var1,var2,... (optional) -- Specifies that after
  762.               the analysis is completed, data values are to be printed  or
  763.               written to  a file.  If the "TO file" portion of the command
  764.               is specified, the output is written to the  specified  file.
  765.               If this portion of the command is omitted, the output values
  766.               are printed  along  with  the  results.    If a file name is
  767.               specified without an extension, ".OUT" is used by default.
  768.  
  769.               The list of variable names determines  which  variables  are
  770.               written to the file and the order in which the values appear
  771.               in each  output record.  Any variable previously declared on
  772.               a VARIABLES command may be  specified.    In  addition,  the
  773.               folowing  special  variable  names  may appear in the output
  774.               list:
  775.  
  776.               $OBS -- The observation record number,  starting  at  1  and
  777.               increasing by 1.
  778.  
  779.               $PREDICTED -- The predicted value for the dependent variable
  780.               for  the  observation, given the independent variable values
  781.               and the parameters as calculated by the analysis.
  782.  
  783.               $RESIDUAL -- The difference between the actual value of  the
  784.               dependent variable and its predicted value.
  785.  
  786.               Examples of OUTPUT commands are shown below:
  787.  
  788.               OUTPUT AGE,MILES,VALUE,$PREDICTED,$RESIDUAL
  789.  
  790.               OUTPUT TO GROWTH.DAT $OBS,TIME,POPULATN,$PREDICTED
  791.  
  792.          POUTPUT  file  (optional)  --  The POUTPUT command specifies that
  793.               Nonlin is  to  write  the  final  estimated  values  of  the
  794.               parameters to  a file.  Each parameter value is written to a
  795.               separate line of the file.  This command is useful to create
  796.               a file of estimated parameter values to be fed into  another
  797.               analysis program.
  798.  
  799.          PLOT  [options]  (optional)  --  Display a plot of the calculated
  800.               function and the data observations.  The  PLOT  command  can
  801.               only   handle   a   single  independent  variable  (multiple
  802.               independent variables would require an n-dimensional surface
  803.               plot); however, there is no restriction  on  the  number  of
  804.  
  805.                 NONLIN -- Nonlinear Regression Program      Page 15
  806.  
  807.  
  808.               parameters being estimated.
  809.  
  810.               You must have a CGA, EGA, or VGA monitor  to  use  the  PLOT
  811.               command, and the NONLIN.FON font file must be in the current
  812.               directory   or  in  a  directory  specified  by  the  NONLIN
  813.               environment variable.  In the  plot,  the  data  values  you
  814.               provided  are  shown  as blue X's and the function fitted to
  815.               the data by Nonlin is shown as a solid green  line.    Press
  816.               Return  to proceed with the analysis after you have finished
  817.               looking at the plot.
  818.  
  819.               The following options may be specified on the PLOT command:
  820.  
  821.               GRID -- display grid lines to make  it  easier  to  estimate
  822.               values.
  823.  
  824.               RESIDUAL  --  draw  vertical  lines  from each observed data
  825.               point to the corresponding point on the calculated  function
  826.               line.   These  lines  represent  the  "residual"  value that
  827.               Nonlin is attempting to minimize.  See also the descriptions
  828.               of the RPLOT and NPLOT commands.
  829.  
  830.               ITERATION  --  draw  a  plot  for  each  iteration  of   the
  831.               regression analysis.   Normally, the plot is drawn after the
  832.               analysis has converged  to  a  solution;  you  may  use  the
  833.               ITERATION   option  to  observe  the  function  during  each
  834.               iteration of the analysis as it converges to fit the data.
  835.  
  836.               VALUES -- use in conjunction with the  ITERATION  option  to
  837.               cause  the  current  parameter values to be displayed before
  838.               the plot for the current iteration.
  839.  
  840.               PRINT -- print a copy of the plot on an HP LaserJet printer.
  841.               Nonlin writes the plot to  the  PRN  device  which  much  be
  842.               attached to  an  HP  Series  II  or Series III printer.  The
  843.               NONLIN.LJF font file must be in the current directory or  in
  844.               a directory specified by the NONLIN environment variable.
  845.  
  846.               NOPAUSE  --  do  not  pause  after  the  plot  is displayed.
  847.               Normally, Nonlin pauses after displaying a plot to allow you
  848.               time to examine it; you press Enter  to  continue  execution
  849.               once you  have  finished  looking  at the plot.  The NOPAUSE
  850.               option causes Nonlin  to  continue  with  execution  without
  851.               pausing after  the  plot  is  displayed.   This is useful in
  852.               conjunction with the PRINT option when Nonlin is  run  in  a
  853.               batch  file and you want to generate a hardcopy plot but not
  854.               pause after the screen display.
  855.  
  856.               The option  keywords  may  be  abbrievated  to  their  first
  857.               letter.  If more than one option is specified, separate them
  858.               with commas.   For example, to produce a plot with both grid
  859.               lines and residual lines, use the following command:
  860.  
  861.                NONLIN -- Nonlinear Regression Program      Page 16
  862.  
  863.  
  864.                   PLOT GRID,RESIDUAL
  865.  
  866.          RPLOT  [options]  (optional)  --  Display  a plot of the residual
  867.               values.  A "residual" value  (or  error  deviation)  is  the
  868.               difference between an actual value of the dependent variable
  869.               for  an  observation  and  the  predicted value based on the
  870.               function fitted  by  the  regression  analysis.     If   the
  871.               calculated function exactly predicted the actual observation
  872.               values, all  of the residual values would be zero.  However,
  873.               this is usually not the case and the  residual  values  show
  874.               where, and by how much, the fitted function fails to predict
  875.               the actual observations.
  876.  
  877.               The  RPLOT  command  causes Nonlin to display a plot showing
  878.               the residual  values  on  the  vertical  (Y)  axis  and  the
  879.               independent  variable  values  on  the  horizontal (X) axis.
  880.               However, if there is more  than  one  independent  variable,
  881.               Nonlin displays the residual values on the vertical (Y) axis
  882.               and  the  dependent  variable  values  on the horizontal (X)
  883.               axis.  The plot title indicates if  the  dependent  variable
  884.               was used for the X axis.
  885.  
  886.               A  residual  plot is very useful for determining if the form
  887.               of the function being fitted is  appropriate  for  the  data
  888.               values.   If the residual values are randomly distributed in
  889.               positive and negative directions then the  form  (shape)  of
  890.               the fitted function is probably appropriate for the data and
  891.               the deviations  are  due  to random measurement errors.  If,
  892.               however, the residuals show a systematic pattern such  as  a
  893.               periodic cycle, then the function may not be appropriate for
  894.               the data  values.    See the discussion of the Durbin-Watson
  895.               statistic for additional  information  about  autocorrelated
  896.               residual values.  The PLOT, RPLOT, and NPLOT commands may be
  897.               used in the same command file.  Press Return to proceed with
  898.               the analysis after you have finished looking at the plot.
  899.  
  900.               The following options may be specified on the RPLOT command:
  901.  
  902.               GRID  --  display  grid  lines to make it easier to estimate
  903.               values.
  904.  
  905.               PRINT -- print a copy of the plot on an HP LaserJet printer.
  906.               Nonlin writes the plot to  the  PRN  device  which  much  be
  907.               attached to an HP Series II or Series III printer.
  908.  
  909.               NOPAUSE  --  do  not  pause  after  the  plot  is displayed.
  910.               Normally, Nonlin pauses after displaying a plot to allow you
  911.               time to examine it; you press Enter  to  continue  execution
  912.               once you  have  finished  looking  at the plot.  The NOPAUSE
  913.               option causes Nonlin  to  continue  with  execution  without
  914.               pausing after the plot is displayed.
  915.  
  916.                NONLIN -- Nonlinear Regression Program      Page 17
  917.  
  918.  
  919.               The  option  keywords  may  be  abbrievated  to  their first
  920.               letter.  If more than one option is specified, separate them
  921.               with commas.
  922.  
  923.          NPLOT  [options]  (optional) -- Display a normal probability plot
  924.               of the residual values.  In this plot, the actual  value  of
  925.               each  residual  is  plotted on the vertical (Y) axis and the
  926.               expected value of the residual, assuming the  residuals  are
  927.               normally distributed, is plotted on the horizontal (X) axis.
  928.               If  the  residuals  are  normally distributed, the resulting
  929.               plot will be a straight line passing through the origin with
  930.               a slope of 1 (i.e., the actual value of each residual should
  931.               equal the expected value from the normal distribution).   If
  932.               the  residuals  are  not normally distributed, the plot will
  933.               deviate from a straight line.
  934.  
  935.               This plot also computes the correlation between  the  actual
  936.               residual  values  and their expected values and displays the
  937.               correlation coefficient in the title line  "(r=n.nn)".    If
  938.               the   residual   values   are   normally   distributed,  the
  939.               correlation should be close to 1.00.   A  correlation  value
  940.               less  than 0.94 suggests that the residuals are not normally
  941.               distributed.
  942.  
  943.               The NPLOT command may be used even if there is more than one
  944.               independent variable.  The PLOT, RPLOT, and  NPLOT  commands
  945.               may be  used  in  the  same  command  file.  Press Return to
  946.               proceed with the analysis after you have finished looking at
  947.               the plot.
  948.  
  949.               The following options may be specified on the NPLOT command:
  950.  
  951.               GRID -- display grid lines to make  it  easier  to  estimate
  952.               values.
  953.  
  954.               PRINT -- print a copy of the plot on an HP LaserJet printer.
  955.               Nonlin  writes  the  plot  to  the  PRN device which much be
  956.               attached to an HP Series II or Series III printer.
  957.  
  958.               NOPAUSE -- do not pause after the plot is displayed.
  959.  
  960.               The option  keywords  may  be  abbrievated  to  their  first
  961.               letter.  If more than one option is specified, separate them
  962.               with commas.
  963.  
  964.          DOMAIN lowvalue,highvalue (optional) -- Specifies the domain over
  965.               which the  plot is to be generated.  If the DOMAIN statement
  966.               is omitted, the domain of the independent variable  is  used
  967.               for the  plot.  The DOMAIN statement can be used to generate
  968.               a  plot  of  the  fitted  function  extrapolated  over   the
  969.               specified domain.    You  can also use the DOMAIN command to
  970.               restrict the domain and "zero in" on a particular  range  of
  971.               the function.    The  DOMAIN  command  only affects the PLOT
  972.  
  973.                NONLIN -- Nonlinear Regression Program      Page 18
  974.  
  975.  
  976.               command; it does not affect the regresson calculation or the
  977.               RPLOT or NPLOT commands.
  978.  
  979.          PRESOLUTION  value  (optional) -- Specifies whether plots sent to
  980.               HP LaserJet printers should  use  150  or  300  dot-per-inch
  981.               resolution.  The  value  parameter  must be 150 or 300.  The
  982.               default value is 150 causes the plots to  use  most  of  the
  983.               horizontal width  of  an  8.5x11 inch page.  These plots are
  984.               suitable for direct  transfer  to  overhead  transparencies.
  985.               Specifying  300  for  the  resolution produces smaller plots
  986.               that are suitable for inclusion in printed documents.
  987.  
  988.          WIDTH value (optional)  --  Specify  the  width,  in  inches,  of
  989.               printed plots.    Due  to  memory  space considerations, the
  990.               maximum width is limited to about 7.9  inches  for  150  DPI
  991.               resolution and  4.5  inches  for 300 DPI resolution.  If you
  992.               have limited memory space, you may have to reduce the  width
  993.               to be  able  to  produce  printed  plots.  This statement is
  994.               ignored unless you request that a plot be printed.
  995.  
  996.          DATA  [file]  (required)  --  Specifies  the  name  of  the  file
  997.               containing  the data records, or introduces the data records
  998.               which follow the command.  If a file name  is  specified  on
  999.               the  DATA  command, the file is opened, its data records are
  1000.               read, and the regression analysis is performed.  If  a  file
  1001.               name  is  specified  without an extension, ".DAT" is used by
  1002.               default.
  1003.  
  1004.               If no file name is specified on the DATA command,  the  data
  1005.               records  must  immediately  follow  the  DATA command in the
  1006.               command file.
  1007.  
  1008.               Each data record must contain at least as many  data  values
  1009.               as  the  number  of  variables  specified  on  the VARIABLES
  1010.               command(s).  The order of the variables as specified on  the
  1011.               VARIABLES command must match the order of the values in each
  1012.               observation.   Any data values beyond those required for the
  1013.               specified variables are  ignored.    Each  observation  must
  1014.               begin on a new line.
  1015.  
  1016.               The  data  values  must  be  separated by one or more spaces
  1017.               and/or a comma.  Data values may contain decimal points  and
  1018.               may be expressed in exponential notation (i.e., n.nnnnEppp).
  1019.               As  a  convenience  for  entering  time  values,  if a value
  1020.               contains one or more colons, the portion to the left of  the
  1021.               colon is  multiplied by 60.  For example, 1:00 is equivalent
  1022.               to 60; 1:00:00 is equivalent to 3600.
  1023.  
  1024.               You may continue data lines by specifying a semicolon as the
  1025.               last non-blank character on a record and  then  placing  the
  1026.               continuation value on the following line(s).
  1027.  
  1028.                NONLIN -- Nonlinear Regression Program      Page 19
  1029.  
  1030.  
  1031.               The  DATA  command  must  be the last command in the command
  1032.               file.  If no file name is specified on the DATA command, the
  1033.               data records must immediately follow the DATA command in the
  1034.               command file.
  1035.  
  1036.               The  following  is  an  example  of  a complete command file
  1037.               including data records:
  1038.  
  1039.               VARIABLES AGE,MILES,VALUE
  1040.               PARAMETERS BASE,DEPAGE,DEPMILES
  1041.               FUNCTION VALUE = BASE + DEPAGE*AGE + DEPMILES*MILES
  1042.               DATA
  1043.               2  10000  13000
  1044.               4  42000   9000
  1045.               1   7000  17000
  1046.               6  52000   6000
  1047.               5  48000   8000
  1048.  
  1049.               If the data records had been placed in a separate file named
  1050.               CAR.DAT,  the   DATA   statement   would   be   changed   to
  1051.               "DATA CAR.DAT".
  1052.  
  1053.  
  1054.          UNDERSTANDING THE RESULTS
  1055.  
  1056.          Nonlin  prints  a  variety  of  statistics  at  the  end  of each
  1057.          analysis.  For each variable, Nonlin lists the minimum value, the
  1058.          maximum value, the mean value, and the standard deviation.    You
  1059.          should  confirm  that  these  values  are  within  the ranges you
  1060.          expect.
  1061.  
  1062.          For  each  parameter,  Nonlin  displays  the  initial   parameter
  1063.          estimate  (which  you specified on the PARAMETER command, or 1 by
  1064.          default), the final (maximum likelihood) estimate,  the  standard
  1065.          error  of  the  estimated  parameter  value,  the  "t"  statistic
  1066.          comparing the  estimated  parameter  value  with  zero,  and  the
  1067.          significance of the t statistic.
  1068.  
  1069.          The  final  estimate  parameter  values  are  the  results of the
  1070.          analysis.  By substituting  these  values  in  the  equation  you
  1071.          specified to be fitted to the data, you will have a function that
  1072.          can  be used to predict the value of the dependent variable based
  1073.          on a set of values for the independent variables.   For  example,
  1074.          if the equation being fitted is
  1075.  
  1076.          y = p0 + p1*x
  1077.  
  1078.          and  the  final  estimates  are 1.5 for p0 and 3 for p1, then the
  1079.          equation
  1080.  
  1081.          y = 1.5 + 3*x
  1082.  
  1083.                 NONLIN -- Nonlinear Regression Program      Page 20
  1084.  
  1085.  
  1086.          is the best equation of this form that will predict the value  of
  1087.          y based on the value of x.
  1088.  
  1089.          The "t" statistic is computed by dividing the estimated value  of
  1090.          the parameter by its standard error.  This statistic is a measure
  1091.          of  the  likelihood that the actual value of the parameter is not
  1092.          zero.  The larger the absolute value of t, the less  likely  that
  1093.          the actual value of the parameter could be zero.
  1094.  
  1095.          The "Prob(t)" value is the probability of obtaining the estimated
  1096.          value  of  the  parameter  if the actual parameter value is zero.
  1097.          The smaller the  value  of  Prob(t),  the  more  significant  the
  1098.          parameter  and the less likely that the actual parameter value is
  1099.          zero.  For example, assume the estimated value of a parameter  is
  1100.          1.0 and  its  standard  error  is 0.7.  Then the t value would be
  1101.          1.43 (1.0/0.7).  If the computed Prob(t) value was 0.05 then this
  1102.          indicates that there is only a 0.05 (5%) chance that  the  actual
  1103.          value of  the parameter could be zero.  If Prob(t) was 0.001 this
  1104.          indicates there is only 1 chance in 1000 that the parameter could
  1105.          be zero.  If Prob(t) was 0.92 this indicates that there is a  92%
  1106.          probability that the actual value of the parameter could be zero;
  1107.          this  implies that the term of the regression equation containing
  1108.          the parameter can be eliminated without  significantly  affecting
  1109.          the accuracy  of  the regression.  The t statistic probability is
  1110.          computed using a two-sided test.  The CONFIDENCE command  can  be
  1111.          used  to cause Nonlin to print confidence intervals for parameter
  1112.          values.  The SQUARE.NLR example regression includes an extraneous
  1113.          parameter (p0) whose estimated value is  much  smaller  than  its
  1114.          standard  error;  the  Prob(t)  value  is 0.99982 indicating that
  1115.          there is a high probability that the value is zero.
  1116.  
  1117.          In addition to the variable and parameter values, Nonlin displays
  1118.          several statistics that indicate how well the equation  fits  the
  1119.          data.   The  "Final  sum of squared deviations" is the sum of the
  1120.          squared differences between the actual  value  of  the  dependent
  1121.          variable  for  each  observation  and  the value predicted by the
  1122.          function, using the final parameter estimates.
  1123.  
  1124.          The "Average deviation" is the average over all  observations  of
  1125.          the  absolute value of the difference between the actual value of
  1126.          the dependent variable and its predicted value.
  1127.  
  1128.          The "Maximum  deviation  for  any  observation"  is  the  maximum
  1129.          difference (ignoring sign) between the actual and predicted value
  1130.          of the dependent variable for any observation.
  1131.  
  1132.          The  "Proportion  of variance explained (R^2)" indicates how much
  1133.          better the function predicts the  dependent  variable  than  just
  1134.          using the  mean  value  of  the dependent variable.  This is also
  1135.          known as the "coefficient of  multiple  determination."    It  is
  1136.          computed  as  follows: Suppose that we did not fit an equation to
  1137.          the data  and  ignored  all  information  about  the  independent
  1138.          variables in each observation.  Then, the best prediction for the
  1139.  
  1140.                NONLIN -- Nonlinear Regression Program      Page 21
  1141.  
  1142.  
  1143.          dependent  variable  value  for any observation would be the mean
  1144.          value of  the  dependent  variable  over  all  observations.  The
  1145.          "variance" is the sum of the squared differences between the mean
  1146.          value  and  the  value  of  the  dependent  variable   for   each
  1147.          observation.   Now,  if we use our fitted function to predict the
  1148.          value of the dependent  variable,  rather  than  using  the  mean
  1149.          value,  a  second  kind of variance can be computed by taking the
  1150.          sum of the squared difference between the value of the  dependent
  1151.          variable   predicted  by  the  function  and  the  actual  value.
  1152.          Hopefully, the variance computed by using the values predicted by
  1153.          the function is better (i.e., a smaller value) than the  variance
  1154.          computed using  the  mean  value.    The  "Proportion of variance
  1155.          explained" is computed as 1 - (variance using  predicted  value /
  1156.          variance using  mean).    If  the function perfectly predicts the
  1157.          observed data, the value of this statistic will be  1.00  (100%).
  1158.          If  the function does no better a job of predicting the dependent
  1159.          variable than using the mean, the value will be 0.00.
  1160.  
  1161.          The "adjusted coefficient of multiple determination (Ra^2)" is an
  1162.          R^2 statistic adjusted  for  the  number  of  parameters  in  the
  1163.          equation and  the  number  of  data  observations.   It is a more
  1164.          conservative estimate  of  the  percent  of  variance  explained,
  1165.          especially  when  the sample size is small compared to the number
  1166.          of parameters.  It is computed using the formula:
  1167.  
  1168.                Ra^2 = 1 - (n-1)/(n-p) * (1-R^2)
  1169.  
  1170.          where `n' is the number of observations, `p'  is  the  number  of
  1171.          parameters,  and  `R^2' is the unadjusted coefficient of multiple
  1172.          determination.
  1173.  
  1174.          The "Durbin-Watson test for autocorrelation" is a statistic  that
  1175.          indicates  the  likelihood  that the deviation (error) values for
  1176.          the regression have a first-order autoregression component.   The
  1177.          regression   models   assume   that   the  error  deviations  are
  1178.          uncorrelated.   In  business  and  economics,   many   regression
  1179.          applications involve   time  series  data.    If  a  non-periodic
  1180.          function, such as a straight line, is fitted to periodic data the
  1181.          deviations have a periodic form  and  are  positively  correlated
  1182.          over  time;  these  deviations are said to be "autocorrelated" or
  1183.          "serially correlated."    Autocorrelated  deviations   may   also
  1184.          indicate  that  the  form (shape) of the function being fitted is
  1185.          inappropriate for the data values (e.g., a linear equation fitted
  1186.          to quadratic data).
  1187.  
  1188.          If the deviations are autocorrelated, there may be  a  number  of
  1189.          consequences   for   the   computed  results:  1)  The  estimated
  1190.          regression coefficients  no  longer  have  the  minimum  variance
  1191.          property;   2)   the   mean  square  error  (MSE)  may  seriously
  1192.          underestimate the variance of the error terms;  3)  the  computed
  1193.          standard   error   of   the   estimated   parameter   values  may
  1194.          underestimate the true standard error, in which case the t values
  1195.          and confidence intervals may be  incorrect.    Note  that  if  an
  1196.  
  1197.                NONLIN -- Nonlinear Regression Program      Page 22
  1198.  
  1199.  
  1200.          appropriate  periodic  function  is  fitted to periodic data, the
  1201.          deviations  from  the regression will be uncorrelated because the
  1202.          cycle of the data values is accounted for by the fitted function.
  1203.  
  1204.          Small values of the Durbin-Watson statistic indicate the presence
  1205.          of autocorrelation.    Consult  significance  tables  in  a  good
  1206.          statistics  book for exact interpretations; however, a value less
  1207.          than 0.80 usually indicates that autocorrelation is likely.    If
  1208.          the  Durbin-Watson  statistic  indicates that the residual values
  1209.          are autocorrelated, it is recommended  that  you  use  the  RPLOT
  1210.          and/or NPLOT commands to display a plot of the residual values.
  1211.  
  1212.          If  an NPLOT command is used to produce a normal probability plot
  1213.          of the residuals, the correlation between the residuals and their
  1214.          expected values  (assuming  they  are  normally  distributed)  is
  1215.          printed in   the   listing.     If  the  residuals  are  normally
  1216.          distributed, the  correlation  should  be  close  to  1.00.     A
  1217.          correlation  less  than  0.94 suggests that the residuals are not
  1218.          normally distributed.
  1219.  
  1220.          An "Analysis of Variance" table  provides  statistics  about  the
  1221.          overall significance of the model being fitted.
  1222.  
  1223.  
  1224.          THEORY OF OPERATION
  1225.  
  1226.          Nonlin uses a model/trust-region technique along with an adaptive
  1227.          choice of  the  model  Hessian.    The algorithm is essentially a
  1228.          combination  of  Gauss-Newton  and  Levenberg-Marquardt  methods;
  1229.          however,  the  adaptive  algorithm  often  works much better than
  1230.          either of these methods alone.
  1231.  
  1232.          The basis for the minimization technique used  by  Nonlin  is  to
  1233.          compute the sum of the squared residuals for one set of parameter
  1234.          values and then slightly alter each parameter value and recompute
  1235.          the  sum  of  squared  residuals  to  see how the parameter value
  1236.          change affects the sum of the squared residuals.  By dividing the
  1237.          difference between the original and new sum of  squared  residual
  1238.          values by the amount the parameter was altered, Nonlin is able to
  1239.          determine  the approximate partial derivative with respect to the
  1240.          parameter.  This partial derivative is used by Nonlin  to  decide
  1241.          how to alter the value of the parameter for the next iteration.
  1242.  
  1243.          If  the  function being modeled is well behaved, and the starting
  1244.          value for the parameter is not too far from  the  optimum  value,
  1245.          the  procedure  will eventually converge to the best estimate for
  1246.          the parameter.  This procedure is carried out simultaneously  for
  1247.          all  parameters  and  is,  in  fact,  a  minimization  problem in
  1248.          n-dimensional space, where `n' is the number of parameters.
  1249.  
  1250.          For a much more detailed explanation of the regression  algorithm
  1251.          used  by Nonlin see ACM Transactions on Mathematical Software 7,3
  1252.          (Sept. 1981) "Dennis, J.E., Gay, D.M., and  Welsch,  R.E.  --  An
  1253.  
  1254.                 NONLIN -- Nonlinear Regression Program      Page 23
  1255.  
  1256.  
  1257.          adaptive nonlinear least-squares algorithm."
  1258.  
  1259.  
  1260.          CONVERGENCE CRITERION
  1261.  
  1262.          Nonlin has several convergence criterion that stop the  iterative
  1263.          minimization procedure.    The  TOLERANCE  command can be used to
  1264.          alter the convergence tolerance value.
  1265.  
  1266.          Two internal variables are used to determine when convergence has
  1267.          occurred.  RFCTOL has a default value of 1E-10 and can be altered
  1268.          by use of the TOLERANCE command.  AFCTOL has a default  value  of
  1269.          1E-20  and  is only altered by the TOLERANCE command if the value
  1270.          specified is less than the default  value.    In  the  discussion
  1271.          which follows the "function value" is half the sum of the squared
  1272.          residuals computed using the current parameter estimates.
  1273.  
  1274.          "Relative  function  convergence"  is  reported  if the predicted
  1275.          maximum possible function reduction  is  at  most  RFCTOL*ABS(F0)
  1276.          where  F0  is  the  function  value  at  the start of the current
  1277.          iteration, and if the last step attempted achieved no  more  than
  1278.          twice the predicted function decrease.
  1279.  
  1280.          "Absolute function convergence" is reported if the function value
  1281.          is less than AFCTOL.
  1282.  
  1283.  
  1284.          HINTS FOR NONLIN USE
  1285.  
  1286.          Convergence Failures
  1287.  
  1288.          One  of  the  potential  problems  that  confronts  any nonlinear
  1289.          minimization procedure is non-convergence.    Non-convergence  is
  1290.          usually  not  a problem for regressions using a linear model, but
  1291.          becomes a  more  serious  consideration  when  using  complicated
  1292.          nonlinear   functions;   increasing   the  number  of  parameters
  1293.          aggravates the problem.
  1294.  
  1295.          Non-convergence can occur in two ways: the solution  may  diverge
  1296.          or  it  may  converge  to  the  wrong solution -- a local minimum
  1297.          rather than the global minimum.  Periodic functions, such as sin,
  1298.          and cos, are particularly prone to  convergence  problems.    For
  1299.          example,  consider  a  nonlinear  regression  performed  with the
  1300.          function:
  1301.  
  1302.          y = offset + amplitude * sin(frequency * x)
  1303.  
  1304.          where x and y are variables, and offset, amplitude, and frequency
  1305.          are the parameters whose values are to be  determined.    If  the
  1306.          starting  value  for  frequency  is  not  reasonably close to the
  1307.          correct value, the solution may converge to a harmonic (multiple)
  1308.          or subharmonic (fundamental) value of the frequency.   A  command
  1309.          file  named  SINE.NLR  is  supplied with the commands and data to
  1310.  
  1311.                NONLIN -- Nonlinear Regression Program      Page 24
  1312.  
  1313.  
  1314.          perform this analysis.
  1315.  
  1316.          The  SWEEP  command  can  be  very  useful in cases like the sine
  1317.          example.  In the SINE.NLR example analysis, the actual  value  of
  1318.          the  frequency  is  3;  the  function  converges  to  the correct
  1319.          solution if the starting value  is  in  the  range  2.6  to  3.3.
  1320.          However,  this example is quite insensitive to the starting value
  1321.          of the amplitude parameter.  With  an  actual  value  of  2,  the
  1322.          correct  solution  is  found  with starting values from 1 through
  1323.          10000.  Similarly, the offset  parameter,  which  had  an  actual
  1324.          value  of  10,  was  successfully determined with starting values
  1325.          ranging from 1 to over 50000.
  1326.  
  1327.          Another example which is sensitive to a parameter starting  value
  1328.          is  POWER.NLR  which  attempts  to  determine  the  values of the
  1329.          parameters p0, p1, and p2 for the function
  1330.  
  1331.          y = p0 + p1*x^p2
  1332.  
  1333.          (where "x^p2" means x raised to the p2 power).  The actual  value
  1334.          of  p2 in the example data is 2; the solution converges correctly
  1335.          if the starting value of p2 is in the range 1.8 to 3.8.  As  with
  1336.          the  other example, the solution is relatively insensitive to the
  1337.          starting values of p0 and p1.
  1338.  
  1339.          Singular Matrix Problems
  1340.  
  1341.          Another possible problem is that the analysis may stop  with  the
  1342.          message "Singular  convergence.  Mutually dependent parameters?".
  1343.          This is usually due  to  one  of  two  things:  (1)  a  redundant
  1344.          parameter  that  is co-dependent with another parameter, or (2) a
  1345.          situation where the value of one parameter "blocks" the effect of
  1346.          other parameters.
  1347.  
  1348.          As an example of a redundant parameter, consider the function
  1349.  
  1350.          y = p0 + p1*p2*x
  1351.  
  1352.          This is a simple linear equation except there are two parameters,
  1353.          p1, and p2, which are both factors to the variable x.  It  should
  1354.          be  clear  that there is no unique solution to this problem since
  1355.          any value of p1 is possible if the right value of p2  is  chosen.
  1356.          Similarly, the function
  1357.  
  1358.          y = p0 + p1 + p2*x
  1359.  
  1360.          has no unique solution since either p0 or p1 is redundant.
  1361.  
  1362.          Similarly, in the equation
  1363.  
  1364.          y = p0 + p1*exp(x+p2)
  1365.  
  1366.                 NONLIN -- Nonlinear Regression Program      Page 25
  1367.  
  1368.  
  1369.          either p1 or p2 is redundant.
  1370.  
  1371.          The second type of singular matrix problem can be illustrated  by
  1372.          the function
  1373.  
  1374.          y = p0 + p1*x^p2
  1375.  
  1376.          If,  during  the  solution process, p1 takes on the value 0, then
  1377.          varying the value of p2 has no effect on the equation and  Nonlin
  1378.          cannot  figure  out  which  way to change the value of p2 to move
  1379.          toward convergence.  The solution to this problem is to assign  a
  1380.          starting  value  that  is  not  zero to p1, and use the CONSTRAIN
  1381.          command to force p1 to remain non-zero.
  1382.  
  1383.  
  1384.          PERFORMANCE ISSUES
  1385.  
  1386.          Nonlin is carefully programmed and compiled  with  an  optimizing
  1387.          compiler for  maximum  performance.    However,  Nonlin is a real
  1388.          "number cruncher," and  the  nonlinear  regression  algorithm  is
  1389.          mathematically very  elaborate.    During  each iteration, Nonlin
  1390.          computes gradients, Jacobians,  Hessians,  and  eigenvalues,  and
  1391.          performs QR and Cholesky matrix decompositions.  All calculations
  1392.          are carried out using double precision (64 bit) floating point.
  1393.  
  1394.          Nonlin  does  not  require  an 80x87 numeric coprocessor, but its
  1395.          performance is greatly enhanced if one is present.  In  fact,  an
  1396.          8088  CPU with an 8087 numeric coprocessor can perform regression
  1397.          analyses faster  than  a  20 MHz  80386  that  does  not  have  a
  1398.          coprocessor.   If  you  have  an  8088  without a coprocessor, be
  1399.          patient -- Nonlin is probably giving it the workout of its life.
  1400.  
  1401.          Very long running times can result if you use the  SWEEP  command
  1402.          with many starting values.  The problem is compounded if you have
  1403.          multiple SWEEP  commands.   If you use the SWEEP command to try a
  1404.          large number of starting parameter values, you can save  time  by
  1405.          using  the  ITERATIONS  command  to  specify  a  small  number of
  1406.          iterations (such as 5) during  the  initial  attempt  to  find  a
  1407.          solution.   Once  a feasible set of starting parameter values has
  1408.          been determined, remove the SWEEP command, specify  the  starting
  1409.          values   on  the  PARAMETERS  command,  increase  the  number  of
  1410.          iterations, and rerun the analysis to get the final result.
  1411.  
  1412.          PROGRAM LIMITS
  1413.  
  1414.          The following is a summary of the Nonlin program limitations:
  1415.  
  1416.          Maximum number of variables = 12
  1417.          Maximum number of parameters = 12
  1418.          Maximum length of variable or parameter names = 10
  1419.  
  1420.          The maximum number of data observations that  Nonlin  can  handle
  1421.          depends  on  the  number of parameters as shown by the table that
  1422.  
  1423.                NONLIN -- Nonlinear Regression Program      Page 26
  1424.  
  1425.  
  1426.          follows:
  1427.  
  1428.               # Parameters    Max Observations
  1429.                     1               2019
  1430.                     2               1611
  1431.                     3               1339
  1432.                     4               1144
  1433.                     5                997
  1434.                     6                883
  1435.                     7                791
  1436.                     8                715
  1437.                     9                652
  1438.                    10                599
  1439.  
  1440.  
  1441.          EXAMPLE ANALYSES
  1442.  
  1443.          A  number  of example regression analysis files are provided with
  1444.          your Nonlin distribution.  All of the example command files  have
  1445.          the extension  ".NLR".   Some of the important ones are described
  1446.          below, others contain comment lines that explain what they do.
  1447.  
  1448.          LINEAR.NLR -- Simple linear regression with plotted function  and
  1449.               data.
  1450.  
  1451.          QUAD.NLR --  Fit a quadratic equation.  Plot the function and the
  1452.               data.
  1453.  
  1454.          ASYMPTOT.NLR -- Fit an asymptotic function Y = 12 - 10/X.
  1455.  
  1456.          F33.NLR -- Multivariate linear regression (multiple  regression).
  1457.               Calculate  the  value  of  a used Beech F33 Bonanza airplane
  1458.               using a linear model based on its age, the number  of  hours
  1459.               on its airframe, and the number of hours on its engine.  The
  1460.               t value and Prob(t) indicate that the number of hours on the
  1461.               engine   (`Engdep'  parameter)  is  not  signficant  to  the
  1462.               regression model; the other parameters are  significant  but
  1463.               airframe  hours  is less significant than the base price and
  1464.               age of the plane.
  1465.  
  1466.          F33YEAR.NLR -- Similar to F33.NLR except the price of the Bonanza
  1467.               is calculated based on a linear function of only the age.
  1468.  
  1469.          F33EXP.NLR  --  Similar  to   F33YEAR.NLR   except   a   negative
  1470.               exponential  function is used rather than a linear function.
  1471.               Compare the fit of this model with that of  the  F33YEAR.NLR
  1472.               example.
  1473.  
  1474.          SINE.NLR --  Fit an equation involving a sin function.  The SWEEP
  1475.               command is used to find a starting point that will converge.
  1476.  
  1477.          SQUARE.NLR -- Fit a sine series to a square wave.  Note  in  this
  1478.               example  that  the  'p0'  parameter,  which  represents  the
  1479.  
  1480.                 NONLIN -- Nonlinear Regression Program      Page 27
  1481.  
  1482.  
  1483.               constant term of the equation, has  an  estimated  value  of
  1484.               9.22715E-006 (very nearly zero)  and  a  standard  error  of
  1485.               0.0398754.  This yields a t value of nearly zero and Prob(t)
  1486.               of  0.99982  which means that there is a 99.982% chance that
  1487.               the actual value of p0 may be zero (it  is  in  fact  zero).
  1488.               This  illustrates how you can use the t value and Prob(t) to
  1489.               identify extraneous parameters.
  1490.  
  1491.          COOLING.NLR -- Fit an equation involving an exponential function.
  1492.               If a heated object is allowed to cool, the rate  of  cooling
  1493.               at any instant is proportional to the difference between the
  1494.               object's temperature and the ambient (room) temperature.  In
  1495.               other  words,  an  object cools faster at first, while it is
  1496.               hot, and the rate of cooling slows down as  the  temperature
  1497.               of the  object  approaches  the  ambient  temperature.   The
  1498.               function that relates the object's temperature to time is:
  1499.  
  1500.               Temperature = Roomtemp+InitTemp*exp(-Coolrate*Time)
  1501.  
  1502.               Where  InitTemp  is  the  number  of  degrees   above   room
  1503.               temperature at time 0, and Coolrate is a factor that depends
  1504.               on  the  mass  of the object, how well it is insulated, etc.
  1505.               The exp function is the value of e (2.7182818...) raised  to
  1506.               a power.   The COOLING.NLR example determines the parameters
  1507.               InitTemp and Coolrate to fit an equation  of  this  form  to
  1508.               some data the author collected.
  1509.  
  1510.          BOIL.NLR  -- The boiling point of water decreases as the pressure
  1511.               in the vessel containing the water  decreases.  "Clapeyron's
  1512.               equation"  shows  that  the  boiling  point  is  related  to
  1513.               pressure according to the following function:
  1514.  
  1515.               Temperature = b / log(Pressure/a) - 459.7
  1516.  
  1517.               Where `Temperature' is  in  degrees  Fahrenheit  (the  459.7
  1518.               constant  converts  degrees Fahrenheit to degrees Rankine --
  1519.               relative to absolute zero), `Pressure' is  the  pressure  in
  1520.               the  vessel  in  pounds per square inch, and `a' and `b' are
  1521.               parameters whose values are to be determined.  The data  for
  1522.               this example was collected by the author's son for a science
  1523.               project.
  1524.  
  1525.          MAGNET.NLR  --  Fit  a  function  involving  an arc tangent and a
  1526.               variable to the third power.  This is an interesting physics
  1527.               problem.  If a magnet is placed due east of a  compass,  the
  1528.               deflection  of the compass needle from north is equal to the
  1529.               arc tangent of the ratio of the  strength  of  the  magnet's
  1530.               field relative  to the earth's magnetic field.  The strength
  1531.               of  the  magnet's  field  at  the   compass   is   inversely
  1532.               proportional  to the cube of the distance from the magnet to
  1533.               the compass.  Thus, the function relating these terms is
  1534.  
  1535.                NONLIN -- Nonlinear Regression Program      Page 28
  1536.  
  1537.  
  1538.               Deflection = deg(atan(Strength / Distance ^ 3))
  1539.  
  1540.               The  deg  function  converts an angle in radians to degrees.
  1541.               In the example, Deflection and Distance are  the  variables,
  1542.               and the value of the Strength parameter is determined.
  1543.  
  1544.          DIODE.NLR -- The current through a diode increases sharply as the
  1545.               voltage across  the  diode  is  increased.  An equation that
  1546.               approximates the current flow as a function of  the  voltage
  1547.               is:
  1548.  
  1549.                       I = exp(b*(V-c))
  1550.  
  1551.               where  `I'  is the current, `V' is the voltage, and `b', and
  1552.               `c' are parameters that are to be estimated by the nonlinear
  1553.               regression.
  1554.  
  1555.          AVLTIME.NLR -- An AVL tree is a  balanced  binary  tree  used  to
  1556.               store information  in  a  computer's  memory.    Because the
  1557.               entries in an AVL tree are kept in  sorted  order,  and  the
  1558.               tree  is  kept in a balanced form, it is possible to rapidly
  1559.               find any entry in the tree.  The time required to create  an
  1560.               AVL tree with N entries is approximately equal to:
  1561.  
  1562.                        Time = a + b*N*log2(N)
  1563.  
  1564.               where  `a' is a constant term equal to the overhead involved
  1565.               in starting and completing a tree creation,  and  `b'  is  a
  1566.               growth   coefficient  that  depends  on  the  speed  of  the
  1567.               computer.  The log2(N) function is the log base 2 of N  (the
  1568.               number of   entries).    The  AVLTIME.NLR  example  fits  an
  1569.               equation to a data set that  relates  the  time  in  seconds
  1570.               required to create an AVL tree with the number of entries in
  1571.               the tree.
  1572.  
  1573.          PIECE.NLR --   Piecewise   linear   function.    Fit  a  function
  1574.               consisting of two linear pieces that bend at X=5.  When X is
  1575.               less than 5, the slope of the function is B1.    When  X  is
  1576.               greater than  or  equal  to 5, the slope is B2.  B0 is the Y
  1577.               value of the function at X=5 (i.e.,  at  the  pivot  point).
  1578.               The  step(a,x)  function  returns the value 0 when x is less
  1579.               than `a'; it returns 1 when x is greater than  or  equal  to
  1580.               `a'.
  1581.  
  1582.  
  1583.          NONLIN USE FOR ROOT FINDING AND FUNCTION MINIMIZATION
  1584.  
  1585.          Although it is designed for nonlinear regression analysis, Nonlin
  1586.          can  also  be  used  to  find  the  root  (zero point) or minimum
  1587.          absolute value of a nonlinear expression.  To use Nonlin in  this
  1588.          fashion   follow  these  steps:  (1)  Do  not  use  any  VARIABLE
  1589.          statements; (2) Use PARAMETER statements to specify the names and
  1590.          optional starting values for the parameters whose values  are  to
  1591.  
  1592.                NONLIN -- Nonlinear Regression Program      Page 29
  1593.  
  1594.  
  1595.          be  determined  as  the roots or minimum value of the expression;
  1596.          (3)  Use  the  FUNCTION statement to specify the expression whose
  1597.          roots or minimum value is to be found; do NOT specify a dependent
  1598.          variable and equal sign -- specify only the expression that is to
  1599.          be minimized; (4) Do not include any data records after the  DATA
  1600.          statement;  it  simply  signals  the  end of the command file and
  1601.          causes the analysis to begin.
  1602.  
  1603.          The following is an example command file to find the root of  the
  1604.          expression SIN(X)-LOG(X):
  1605.  
  1606.              PARAMETER X
  1607.              FUNCTION SIN(X) - LOG(X)
  1608.              DATA
  1609.  
  1610.          Notice  that the "variable" in the expression, X, is not declared
  1611.          to be a variable  but  rather  a  parameter.    This  example  is
  1612.          included in the file MINSL.NLR which you can run.
  1613.  
  1614.          For  this  type  of analysis, Nonlin determines the values of the
  1615.          parameters that minimize the absolute value  of  the  expression.
  1616.          If  the expression has a zero value (i.e., a root), that value is
  1617.          found since that is the smallest possible absolute value.  If the
  1618.          expression does not have a  zero  point,  Nonlin  determines  the
  1619.          values of the parameters that produce the smallest absolute value
  1620.          of the expression.  For example, the expression 2*x^2-3*x+10 does
  1621.          not  have  a  root but reaches a minimum value of 8.875 when x is
  1622.          0.75.  The MINPAROB.NLR command file contains this example.
  1623.  
  1624.          There are a number of cautions that you should keep in mind  when
  1625.          using Nonlin to find roots or minimum values:
  1626.  
  1627.          1. Nonlin  will find only one root or minimum value per analysis.
  1628.             For example, the expression 9-x^2 has two roots:  -3  and  +3.
  1629.             Nonlin  will find one of the roots; which one it finds depends
  1630.             on the starting value specified for X.
  1631.  
  1632.          2. Nonlin will find only real roots, not complex.
  1633.  
  1634.          3. If the expression contains a local minimum, Nonlin may find it
  1635.             rather than the global minimum or root.  Of course, if you are
  1636.             looking for a local minimum in a certain region this could  be
  1637.             considered a   feature.      For   example,   the   expression
  1638.             0.5*x^3+5*(x-2)^2+15 has a local minimum at x=1.61 and a  root
  1639.             at x=-13.38.  If the starting value of x is less than -8.3 the
  1640.             root is found; if the starting value is greater than -8.3, the
  1641.             local minimum  is  found.    If the expression contains only a
  1642.             single variable,  use  the  Mathplot  program  to  graphically
  1643.             display the expression and determine a good starting value for
  1644.             the  variable  (see  the  end  of this document for additional
  1645.             information about Mathplot).  The SWEEP command  can  also  be
  1646.             used  to  try  multiple  starting  values when searching for a
  1647.             global minimum.
  1648.  
  1649.                NONLIN -- Nonlinear Regression Program      Page 30
  1650.  
  1651.  
  1652.  
  1653.          FUNCTION MINIMIZATION EXAMPLES
  1654.  
  1655.          MINFALL.NLR  --  The  time  taken  for  an object to slide down a
  1656.               frictionless guide from position (0,h) to  another  position
  1657.               (d,0)  (i.e.,  falling  through  a distance `h' while moving
  1658.               horizontally a distance `d') depends on the  path  that  the
  1659.               object takes as it follows the guide.  It turns out that the
  1660.               path  that minimizes the descent time is not a straight line
  1661.               from  (0,h)  to  (d,0)  but  rather   a   curve   called   a
  1662.               brachistochrone  with  a  steeper  slope near the beginning,
  1663.               that gives the object a chance to  accelerate  quickly,  and
  1664.               then a  shallower  slope  further  on.  Finding the shape of
  1665.               this curve is a classic problem in the branch of mathematics
  1666.               called the Calculus of  Variations.    The  MINFALL  example
  1667.               solves  a  simpler  case  of this problem: the object slides
  1668.               along a straight guide  from  (0,1000)  to  an  intermediate
  1669.               position (px,py), and then along another straight guide from
  1670.               (px,py) to  (1000,0).    What  point, (px,py), minimizes the
  1671.               descent time? [Note concerning the answer: The fall time for
  1672.               the object if it follows a straight guide from  (0,1000)  to
  1673.               (1000,0)  is 2.0203 seconds; the fall time if it follows the
  1674.               two straight segments found by MINFALL is 1.8748;  the  fall
  1675.               time  if  it  follows  the  ideal  curved brachistochrone is
  1676.               1.8590.  The speed of the object at the end of the  fall  is
  1677.               the  same  regardless  of  the  path  taken (conservation of
  1678.               energy).]
  1679.  
  1680.          MINFUEL.NLR -- A lunar lander is hovering above  the  surface  of
  1681.               the moon  looking  for  a  suitable landing site.  Available
  1682.               fuel is critical and the desired site is  200  meters  away.
  1683.               How  long  should  the horizontal thruster be fired to start
  1684.               and stop the motion over the ground?  The vertical  thruster
  1685.               must  be  used  continuously  to  keep the lander from being
  1686.               pulled to the surface.  If too little horizontal  thrust  is
  1687.               used  the  spacecraft will move slowly and much fuel will be
  1688.               consumed  by  the  vertical  thruster  counterbalancing  the
  1689.               downward gravitational pull while hovering over the surface.
  1690.               On the other hand, if the horizontal thruster is fired for a
  1691.               a  long  time,  the spacecraft will move quickly (minimizing
  1692.               the hovering time) but excessive fuel will  be  used  during
  1693.               the horizontal  acceleration  and deceleration.  MINFUEL.NLR
  1694.               determines how long the thruster should be fired during  the
  1695.               start  and  stop  accelerations  such  that  the  total fuel
  1696.               consumption  (start  thrust  +  stop  thrust  +  hover)   is
  1697.               minimized.
  1698.  
  1699.                 NONLIN -- Nonlinear Regression Program      Page 31
  1700.  
  1701.  
  1702.          ACKNOWLEDGEMENT
  1703.  
  1704.          The nonlinear regression algorithm used by Nonlin  was  published
  1705.          in  ACM  Transactions  on  Mathematical Software 7,3 (Sept. 1981)
  1706.          "Dennis, J.E.,  Gay,  D.M.,  and  Welsch,  R.E.  --  An  adaptive
  1707.          nonlinear least-squares algorithm."
  1708.  
  1709.  
  1710.          USE AND DISTRIBUTION OF NONLIN
  1711.  
  1712.          You  are  welcome to make copies of this program and pass them on
  1713.          to friends or post this program on bulletin boards or  distribute
  1714.          it   via   disk  catalog  services  provided  the  entire  Nonlin
  1715.          distribution is included in its original,  unmodified  form.    A
  1716.          distribution  fee  may  be  charged for the cost of the diskette,
  1717.          shipping and handling.  However,  Nonlin  may  not  be  sold,  or
  1718.          incorporated  in  another  product  that  is  sold,  without  the
  1719.          permission of Phillip H. Sherrod.    Vendors  are  encouraged  to
  1720.          contact the author to get the most recent version of Nonlin.
  1721.  
  1722.          As  a  shareware product, you are granted a no-cost, trial period
  1723.          of 30 days during which you may evaluate Nonlin.    If  you  find
  1724.          Nonlin  to  be  useful,  educational,  and/or  entertaining,  and
  1725.          continue to use it beyond  the  30  day  trial  period,  you  are
  1726.          required  to  compensate  the  author by sending the registration
  1727.          form printed at the end of this document  (and  in  REGISTER.DOC)
  1728.          with   the   appropriate  registration  fee  to  help  cover  the
  1729.          development and support of Nonlin.
  1730.  
  1731.          In return for registering, you will  be  authorized  to  continue
  1732.          using  Nonlin  beyond  the  trial period and you will receive the
  1733.          most recent  version  of  the  program,  a  laser-printed,  bound
  1734.          manual,  and  three  months  of  support  via telephone, mail, or
  1735.          CompuServe.  Your  registration  fee  will  be  refunded  if  you
  1736.          encounter a serious bug that cannot be corrected.
  1737.  
  1738.          The  author  frequently improves Nonlin and it is likely that the
  1739.          version you have is not the most recent version.  Note, the  cost
  1740.          of  registering  Nonlin  is  insignificant compared with what you
  1741.          would have to pay to purchase a  commercial  statistical  package
  1742.          with an equivalent regression capability.
  1743.  
  1744.          This  program  is  produced  by  a  member  of the Association of
  1745.          Shareware Professionals (ASP).  ASP wants to make sure  that  the
  1746.          shareware principle  works for you.  If you are unable to resolve
  1747.          a shareware-related problem with an ASP member by contacting  the
  1748.          member directly,  ASP may be able to help.  The ASP Ombudsman can
  1749.          help you resolve a dispute or problem with  an  ASP  member,  but
  1750.          does not provide technical support for members' products.  Please
  1751.          write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442
  1752.          or send a CompuServe message via CompuServe Mail to ASP Ombudsman
  1753.          7007,3536.
  1754.  
  1755.                 NONLIN -- Nonlinear Regression Program      Page 32
  1756.  
  1757.  
  1758.          You are welcome to contact the author:
  1759.  
  1760.                                 Phillip H. Sherrod
  1761.                                  4410 Gerald Place
  1762.                           Nashville, TN  37205-3806  USA
  1763.                               615-292-2881 (evenings)
  1764.                                CompuServe: 71333,27
  1765.  
  1766.          Both the Nonlin program and documentation are copyright (c)  1992
  1767.          by Phillip  H.  Sherrod.    You  are not authorized to modify the
  1768.          program. "Nonlin" is a trademark.
  1769.  
  1770.          Disclaimer
  1771.  
  1772.          Nonlin is provided "as is" without warranty of any  kind,  either
  1773.          expressed or  implied.    This  program  may  contain  "bugs" and
  1774.          inaccuracies, and its results should not be assumed to be correct
  1775.          unless they are  verified  by  independent  means.    The  author
  1776.          assumes  no  responsibility for the use of Nonlin and will not be
  1777.          responsible for any damage resulting from its use.
  1778.  
  1779.                NONLIN -- Nonlinear Regression Program      Page 33
  1780.  
  1781.  
  1782.  
  1783.  
  1784.                                   M A T H P L O T
  1785.  
  1786.  
  1787.                       Mathematical Function Plotting Program
  1788.  
  1789.  
  1790.                                    Special Offer
  1791.  
  1792.  
  1793.  
  1794.          If  you like Nonlin, you should check out the Mathplot program by
  1795.          the same author.
  1796.  
  1797.          Mathplot allows you to specify complicated mathematical functions
  1798.          using ordinary algebraic expressions and immediately  plot  them.
  1799.          Four  types  of  functions  may be specified: cartesian (Y=f(X));
  1800.          parametric    cartesian    (Y=f(T)     and     X=f(T));     polar
  1801.          (Radius=f(Angle));   and   parametric   polar   (Radius=f(T)  and
  1802.          Angle=f(T)).  Up to four functions may be plotted simultaneously.
  1803.          Scaling is automatic.  Options  are  available  to  control  axis
  1804.          display and labeling as well as grid lines.  Hard copy output may
  1805.          be generated  as  well  as  screen display.  Mathplot is an ideal
  1806.          tool for engineers, scientists, math and  science  teachers,  and
  1807.          anyone   else   who   needs  to  quickly  visualize  mathematical
  1808.          functions.
  1809.  
  1810.  
  1811.          SPECIAL OFFER
  1812.  
  1813.          Registered users of Nonlin can order Mathplot for a special price
  1814.          of $18.  Or, for an even better deal, if you register Nonlin  and
  1815.          order Mathplot at the same time, you can get both for $40.
  1816.  
  1817.                 NONLIN -- Nonlinear Regression Program      Page 34
  1818.  
  1819.  
  1820.                         TSX-32 Multi-User Operating System
  1821.  
  1822.          If you have a need  for  a  multi-user,  multi-tasking  operating
  1823.          system, you  should look into TSX-32.  TSX-32 is a full-featured,
  1824.          high performance, multi-user operating system for the 386 and 486
  1825.          that provides both 32-bit  and  16-bit  program  support.    With
  1826.          facilities  such  as  multitasking and multisessions, networking,
  1827.          virtual memory,  background  batch  queues,  data  caching,  file
  1828.          access control, real-time, and dial-in support, TSX-32 provides a
  1829.          solid environment for a wide range of applications.
  1830.  
  1831.          TSX-32 is not a limited, 16-bit, multi-DOS add-on.  Rather, it is
  1832.          a  complete  32-bit  operating system which makes full use of the
  1833.          hardware's potential, including protected mode execution, virtual
  1834.          memory, and demand paging.  TSX-32 sites range from small systems
  1835.          with 2-3 terminals to  large  installations  with  more  than  64
  1836.          terminals on a single 386.
  1837.  
  1838.          In  addition  to  supporting  most  popular  16-bit DOS programs,
  1839.          TSX-32 also provides a 32-bit "flat" address space with both Phar
  1840.          Lap and DPMI compatible modes of execution.
  1841.  
  1842.          Since the DOS file structure is  standard  for  TSX-32,  you  can
  1843.          directly read  and write DOS disks.  And, you can run DOS part of
  1844.          the time and TSX-32 the rest of the time on the same computer.
  1845.  
  1846.          TSX-32 allows each user to control up to 10 sessions.    Programs
  1847.          can also  "fork"  subtasks  for multi-threaded applications.  The
  1848.          patented Adaptive Scheduling Algorithm provides consistently good
  1849.          response time under varying conditions.
  1850.  
  1851.          The TSX-32  network  option  provides  industry  standard  TCP/IP
  1852.          networking through  Ethernet  and  serial  lines.    Programs can
  1853.          access files on  remote  machines  as  easily  as  on  their  own
  1854.          machine.   The  SET  HOST command allows a user on one machine to
  1855.          log onto another computer in the network.  FTP, Telnet,  and  NFS
  1856.          are available for interoperability with other systems.
  1857.  
  1858.          TSX-32  allows  simultaneous  real-time  program  execution  with
  1859.          normal time-sharing operations.  Real-time programs  can  connect
  1860.          to  interrupts,  access  device  control ports, and preempt other
  1861.          operations when necessary.  TSX-32 is an ideal process control or
  1862.          data collection system.
  1863.  
  1864.          TSX-32 is, quite simply, the best  and  most  powerful  operating
  1865.          system available for the 386 and 486.  For additional information
  1866.          contact:
  1867.                             S&H Computer Systems, Inc.
  1868.                               1027 17th Avenue South
  1869.                               Nashville, TN 37212 USA
  1870.                                615-327-3670 (voice)
  1871.                                 615-321-5929 (fax)
  1872.                                CompuServe: 71333,27
  1873.  
  1874.                 NONLIN -- Nonlinear Regression Program      Page 35
  1875.  
  1876.  
  1877.        =====================================================================
  1878.                                 Software Order Form
  1879.        =====================================================================
  1880.  
  1881.          Name ______________________________________________________
  1882.  
  1883.          Address ___________________________________________________
  1884.  
  1885.          City _______________________  State _______ Zip ___________
  1886.  
  1887.          Telephone _________________________________________________
  1888.  
  1889.          CompuServe account (optional) _____________________________
  1890.  
  1891.          Nonlin version ____________________________________________
  1892.  
  1893.          Bulletin board where you found Nonlin _____________________
  1894.  
  1895.          Comments __________________________________________________
  1896.  
  1897.          Check the box below which indicates your order type:
  1898.  
  1899.          ___ I wish to register Nonlin ($25).
  1900.  
  1901.          ___ I wish to order Mathplot ($20).
  1902.  
  1903.          ___ I wish to register Nonlin and order Mathplot ($40).
  1904.  
  1905.          Add $5 to any amount shown above if the software is being shipped
  1906.          out of the United States.
  1907.  
  1908.          In return for registering,  you  will  receive  the  most  recent
  1909.          version  of  the  program,  a  laser-printed,  bound  copy of the
  1910.          manual, and three months  of  telephone  or  CompuServe  support.
  1911.          Your  registration fee will be refunded if you find a serious bug
  1912.          that cannot be corrected.
  1913.  
  1914.          Distribution disk choice (check one):
  1915.  
  1916.                3.50" HD (1.4 MB)  ______
  1917.                5.25" HD (1.2 MB)  ______
  1918.                5.25" DD (360 KB)  ______
  1919.  
  1920.          Send this form with the amount indicated to the author:
  1921.  
  1922.                                 Phillip H. Sherrod
  1923.                                  4410 Gerald Place
  1924.                            Nashville, TN  37205-3806 USA
  1925.                               615-292-2881 (evenings)
  1926.                                CompuServe: 71333,27
  1927.  
  1928.          ASP
  1929.